<?php
/**
 * Dependency service interface
 *
 * PHP version 5
 *
 * @category  W
 * @package   Interfaces
 * @author    Olivier Hoareau <olivier@phppro.fr>
 * @copyright 2009 PHPPRO http://www.phppro.fr
 * @license   http://dev.phppro.fr/license PHPPRO
 * @version   SVN: $Id:$
 * @link      http://dev.phppro.fr/projects/wdependency
 */
/**
 * Dependency service interface
 *
 * @category  W
 * @package   Interfaces
 * @author    Olivier Hoareau <olivier@phppro.fr>
 * @copyright 2009 PHPPRO http://www.phppro.fr
 * @license   http://dev.phppro.fr/license PHPPRO
 * @version   SVN: $Id$
 * @link      http://dev.phppro.fr/projects/wdependency
 */
interface W_Dependency_Interface
{
    /**
     * Adds an exporter
     *
     * @param string|W_Dependency_Exporter_Interface $exporter the exporter
     *
     * @return W_Dependency_Interface
     */
    public function addExporter ($exporter, $options = null);
    /**
     * Adds a listener
     *
     * @param string|W_Dependency_Listener_Interface $listener the listener
     *
     * @return W_Dependency_Interface
     */
    public function addListener ($listener, $options = null);
    /**
     * Adds a analyzer
     *
     * @param string|W_Dependency_Analyzer_Interface $analyzer the analyzer
     *
     * @return W_Dependency_Interface
     */
    public function addAnalyzer ($analyzer, $options = null);
    /**
     * Adds a filter
     *
     * @param string|W_Dependency_Filter_Interface $filter the filter
     *
     * @return W_Dependency_Interface
     */
    public function addFilter ($filter, $options = null);
    /**
     * Adds a aggregator
     *
     * @param string|W_Dependency_Aggregator_Interface $aggregator the aggregator
     *
     * @return W_Dependency_Interface
     */
    public function addAggregator ($aggregator, $options = null);
    /**
     * Adds a source
     *
     * @param string|W_Dependency_source_Interface $source the source
     *
     * @return W_Dependency_Interface
     */
    public function addSource ($source, $options = null);
    /**
     * Processes the dependency analyze
     *
     * @param $options
     *
     * @return W_Dependency_Interface
     */
    public function process ($options);
}